さて、FreeBSDの設定を行う上で、この「rc.conf」が実際にやっていることを理解しておくのは、
FreeBSDを使いこなす上で非常に重要なポイントだと思います。
しかし、これ以降、ある程度FreeBSDを使いこなせてないと、
何を言っているのかさっぱり分からない項目もあると思われますし、
そういうユーザーに限定して話を進めていると思っていただいても構いません。
知らなくても困らないけど、知っていると色々と「なるほど!」と助かる事があるかも知れない…
初心者から一歩卒業するための、そんな内容だと思います。
[rc.conf]の初期設定(オリジナル)ファイルは[/etc/defaults/rc.conf]に存在します。
このファイルに「/etc/rc.conf」にて使用できる全ての設定項目が書き込まれ、そして初期設定が行われています。
このファイルを確認する事で、どんなものが「/etc/rc.conf」にて設定可能か確認できると思います。
ここで、どうして2つもファイルがあるか疑問に思う方もいるかも知れません。
FreeBSD起動時に、まずある段階でこの「/etc/defaults/rc.conf」の全設定をメモリに読み込みます。
その次に「/etc/rc.conf」を読み込んで、書き込まれている内容をメモリ上で上書きします。
このため同じ内容があった場合、「/etc/rc.conf」が優先される…と言う事を覚えておいてください。
「/etc/defaults/rc.conf」はオリジナルです。変更してはいけません。
ここに書かれている内容は、すべて「Yes」や「No」、パラメータのみの場合がほとんどです。
なら実際に設定を行っているのはどこか?
そのほとんどは「/etc/rc」に書かれているか、「/etc/rc」にて呼び出されるファイルにあります。
ネットワーク関係の設定のほとんどは、この「rc.conf」に書かれているパラメータに従って、
「/etc/rc」内で呼び出される「/etc/rc.network」にて行われています。
例えば「/etc/rc.conf」に「gateway_enable="YES"」と言う設定があるとします。
標準では無効に指定されています。
なぜなら「/etc/defaults/rc.conf」にて「gateway_enable="NO"」と指定されているからです。
しかし「/etc/rc.conf」にて「gateway_enable="YES"」と指定すると、
実際にゲートウェイとしてIPフォワーディング機能が有効になります。
これは「/etc/rc.network」にて「gateway_enable="NO"」の場合は何も実行しない。
しかし「gateway_enable="YES"」の場合は「sysctl
net.inet.ip.forwarding=1 >/dev/null」を
実行するように記述されているせいです。
(LinuxでIPマスカレードを設定した事ある方ならば「echo
1 > /proc/sys/net/ipv4/ip_forward」を
実行(設定)した覚えのある方もいると思います。これと同じことをやっているんですね)
ちなみにこの「gateway_enable」を実行するスクリプトにおいて、
厳密には「[Yy][Ee][Ss]の場合実行する」と指定されています。
これは「YES」でも「Yes」でも「yes」でも「yEs」でも「YeS」(以下略)でも、どれでも実行されると言う事です。
ありがたいですね。この[Yy][Ee][Ss]指定は、おおよそどの設定でも使用可能です。[Nn][Oo]も勿論です。
このページでは使用していませんがディフォルトルーターを指定する
「defalutrouter="xxx.xxx.xxx.xxx"」が存在した場合(ディフォルトではNOです)
この「/etc/rc.network」の設定に従って「NO」の場合は何も実行しない。
それ以外の場合は「route add default xxx.xxx.xxx.xxx」というコマンドが実行されている事になります。
他にも「/etc/rc.conf」にある「keymap」においては「/etc/rc.syscons」にて実際に設定されています。
こういうことを理解しておくと、サーバーが起動してから、rc.confを使用せずに
rc.confの設定項目をコンソールから行うことが可能になります。
ちなみにアプリケーションソフトをインストールした場合、
起動スクリプトが「/usr/local/etc/rc.d 」ディレクトリにあれば自動的に起動しますが
これは「/etc/defaults/rc.conf」にて「local_startup="/usr/local/etc/rc.d
/usr/X11R6/etc/rc.d"」と
指定されているからです。この実際の起動プログラムは「/etc/rc」に書かれています。
では、こういった設定ファイルは一体どこから読み込まれているのか?
次はその説明をしたいと思います。
FreeBSD起動時には、まず最初にブートローダーが起動、
カーネルが読み込まれによるハードウェアの検出とドライバ組み込みが終わったあと、
一旦「シングルモード」と呼ばれる状態で起動します。
次に「/etc/rc」という設定ファイルを読み込み、
そこに書かれている通りに設定を行い、最後にログインプロンプトを表示させます。
これが起動時の大まかな流れです。
この「/etc/rc」ファイルに全ての初期設定内容が書かれているわけではありませんが、
起動時に読み込まれるファイルは、必ずここに指定されているか、
ここに指定しているファイルがさらに読み込むか…のどちらかです。
ちなみに、独自に起動させたいプログラムがあるなら「/etc/rc.local」を作成して
そこに書き込めば良いとも書かれていたりします。
簡単に説明しましたが、こういったファイルを読んでみることにより、
FreeBSDが何をやっているのか?がさらに詳しく分かると思います。
興味(と時間)がある方は、是非こういったファイルを読み解いて、
さらに考察を深めるのもいいかも知れません。
[一つ上に戻る] |